Leetcode 24 Swap Node in Pairs (Medium)
題目: 給定一個鍊結串列,交換每兩個相鄰節點並返回其首節點。您必須在不修改串列
節點中的值的情況下解決問題。
解題想法:
struct ListNode* swapPairs(struct ListNode* head) {
if (!head || !head->next) return head;
struct ListNode *newHead = head->next;
struct ListNode *currPairStart = head;
struct ListNode *prevPairEnd = NULL;
while (currPairStart && currPairStart->next) {
struct ListNode* nextPairStart = currPairStart->next->next;
if(prevPairEnd)
prevPairEnd->next = currPairStart->next;
currPairStart->next->next = currPairStart;
currPairStart->next = nextPairStart;
prevPairEnd = currPairStart;
currPairStart = nextPairStart;
}
return newHead;
}
今天我原本想練習 linked list dummy, pointer to pointer的技巧,但我寫太不熟練,因此都寫得不是很順利,希望明天能在分享相關題目